package com.zhongkai.service.book;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import com.zhongkai.dao.book.TDjCcdjxxDAO;
import com.zhongkai.dao.book.TDjCcdjxxLsDAO;
import com.zhongkai.dao.book.TDjCcywclDAO;
import com.zhongkai.model.book.TCsCclxdz;
import com.zhongkai.model.book.TDjCcdjxx;
import com.zhongkai.model.book.TDjCcdjxxLs;
import com.zhongkai.model.book.TDjCcywcl;
import com.zhongkai.model.config.User;
import com.zhongkai.service.BaseService;
@Component
@Transactional
public class TransforService extends BaseService{
	private TDjCcdjxxDAO tDjCcdjxxDAO;
	private TDjCcywclDAO tDjCcywclDAO;
	private TDjCcdjxxLsDAO tDjCcdjxxLsDAO;
	
	@Resource
	public void settDjCcdjxxDAO(TDjCcdjxxDAO tDjCcdjxxDAO) {
		this.tDjCcdjxxDAO = tDjCcdjxxDAO;
	}
	
	@Resource
	public void settDjCcdjxxLsDAO(TDjCcdjxxLsDAO tDjCcdjxxLsDAO) {
		this.tDjCcdjxxLsDAO = tDjCcdjxxLsDAO;
	}
	
	@Resource
	public void settDjCcywclDAO(TDjCcywclDAO tDjCcywclDAO) {
		this.tDjCcywclDAO = tDjCcywclDAO;
	}

	public void save(TDjCcdjxx djCcdjxx) throws Exception{
		tDjCcdjxxDAO.insert(djCcdjxx);
	}
	public List<TDjCcdjxx>findByHql(String hql,Object[] values){
		return tDjCcdjxxDAO.findByHql(hql, values);
	}
	
	public Object selectById(Class entityClass,Integer id) throws Exception{
		
		return tDjCcdjxxLsDAO.selectById(entityClass, id);
	}
	/*过户*/
	public void saveTransfor_xx(Integer tDjCcdjxxLsccdjh,TDjCcdjxx tDjCcdjxx,TDjCcywcl tDjCcywcl,HttpServletRequest request) throws Exception{
		
		//先取得登记信息表实例作为历史信息
		TDjCcdjxx tDjCcdjxxOld=(TDjCcdjxx)tDjCcdjxxDAO.selectById(TDjCcdjxx.class, tDjCcdjxxLsccdjh);
		
		TDjCcdjxxLs tDjCcdjxxLs=new TDjCcdjxxLs();
		BeanUtils.copyProperties(tDjCcdjxxOld, tDjCcdjxxLs);
		
		//设已过户状态
		tDjCcdjxxOld.setDjztDm("03");
		//更新登记表记录
		tDjCcdjxxDAO.update(tDjCcdjxxOld);
		
		tDjCcdjxx.setCcpzh("粤T."+tDjCcdjxx.getCcpzh());
		TCsCclxdz tCsCclxdz=(TCsCclxdz)super.JjcclxDM2SwcclxDm(tDjCcdjxx.getJjcclxDm());
		//设税务车牌照号
		tDjCcdjxx.setSwcclxDm(tCsCclxdz.getSwcclxDm());
		User user=(User)request.getSession().getAttribute("user");
		tDjCcdjxx.setCzrDm(user.getUserIdentifier());
		tDjCcdjxx.setCzRq(new Date());
		//保存车船登记信息
		tDjCcdjxxDAO.insert(tDjCcdjxx);
		
		//业务动作为过户
		tDjCcywcl.setYwlxDm("05");
		//业务处理表登记号参照了登记信息表
		tDjCcywcl.setCcdjh(tDjCcdjxx.getCcdjh());
		tDjCcywcl.setCzrDm(user.getUserIdentifier());
		tDjCcywcl.setCzRq(new Date());
		SimpleDateFormat sdf=new SimpleDateFormat("yyyyMM");
		Date sbnyDate=sdf.parse(tDjCcdjxx.getSbqsny());
		tDjCcywcl.setSbRq(sbnyDate);
		//保存业务表记录
		tDjCcywclDAO.insert(tDjCcywcl);
		
		//历史登记表业务处理序号参照了业务处理表序号
		tDjCcdjxxLs.setYwclXh(tDjCcywcl.getYwclXh());
		//保存历史登记表
		tDjCcdjxxLsDAO.insert(tDjCcdjxxLs);
		
	}
}
